import os
from dotenv import load_dotenv
import os
from flask import Flask, render_template, request, jsonify
import dashscope

# 导入金融数据模块
import finance_data

# 创建Flask应用实例
app = Flask(__name__)

# 加载环境变量 - 从当前目录的.env文件加载
load_dotenv()

# 配置通义千问API密钥
api_key = os.getenv('QIANWEN_API_KEY')
if not api_key:
    raise ValueError("通义千问API密钥未设置，请检查.env文件")
dashscope.api_key = api_key

# 初始化金融数据API
redis_client = finance_data.init_finance_data()

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/chat', methods=['POST'])
def chat():
    user_message = request.json.get('message')
    
    if not user_message:
        return jsonify({'message': '请输入消息内容'})
    
    # 调用通义千问大模型
    try:
        response = dashscope.Generation.call(
            model='qwen-plus',
            messages=[
                {'role': 'system', 'content': '你是一位资深金融分析师，拥有丰富的金融市场知识和投资经验。擅长股票、基金、债券等多种金融产品分析，能够结合宏观经济形势、行业发展趋势和公司基本面提供专业的投资建议。请用通俗易懂的语言回答用户的金融问题，提供有价值的见解，并给出合理的解释和依据。'},
                {'role': 'user', 'content': user_message}
            ],
            result_format='message'
        )
        
        if response.status_code == 200:
            bot_message = response.output.choices[0].message.content
        else:
            bot_message = f'API错误: {response.message}'
    except Exception as e:
        bot_message = f'发生异常: {str(e)}'
    
    return jsonify({'message': bot_message})

# 修改金融数据API路由
@app.route('/finance/stock', methods=['GET'])
def get_stock():
    stock_code = request.args.get('stock_code')
    if not stock_code:
        return jsonify({'error': '缺少股票代码参数'}), 400
    
    data = finance_data.get_stock_data(stock_code, redis_client)
    return jsonify(data)

@app.route('/finance/index', methods=['GET'])
def get_index():
    index_code = request.args.get('index_code')
    if not index_code:
        return jsonify({'error': '缺少指数代码参数'}), 400
    
    data = finance_data.get_index_data(index_code, redis_client)
    return jsonify(data)

if __name__ == '__main__':
    app.run(debug=True)